home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK2.toast / Development Kits (Disc 2) / QuickTime / Sample Code / QT Image Transcoders / Sample Transcoder / TestTranscoder.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-26  |  2.7 KB  |  115 lines  |  [TEXT/CWIE]

  1. #ifdef STAND_ALONE
  2.     #define TestTranscoderDispatcher main
  3. #else
  4.     void registerTestTranscoder(void);
  5. #endif
  6.  
  7. #include <ImageCompression.h>
  8.  
  9. pascal ComponentResult TestTranscoderDispatcher( ComponentParameters *params, Handle storage );
  10.  
  11. pascal ComponentResult TestTranscoderBeginSequence (Handle storage, ImageDescriptionHandle srcDesc, ImageDescriptionHandle *dstDesc);
  12. pascal ComponentResult TestTranscoderConvert (Handle storage, void *srcData, long srcDataSize, void **dstData, long *dstDataSize);
  13. pascal ComponentResult TestTranscoderDisposeData (Handle storage, void *dstData);
  14. pascal ComponentResult TestTranscoderEndSequence (Handle storage);
  15.  
  16. pascal ComponentResult TestTranscoderDispatcher( ComponentParameters *params, Handle storage )
  17. {
  18.     ComponentFunctionUPP proc = nil;
  19.     ComponentResult err = noErr;
  20.  
  21.     switch (params->what) {
  22.         case kComponentOpenSelect:
  23.         case kComponentCloseSelect:
  24.             break;
  25.  
  26.         case kImageTranscoderBeginSequenceSelect:
  27.             proc = (ComponentFunctionUPP)TestTranscoderBeginSequence;
  28.             break;
  29.  
  30.         case kImageTranscoderConvertSelect:
  31.             proc = (ComponentFunctionUPP)TestTranscoderConvert;
  32.             break;
  33.  
  34.         case kImageTranscoderDisposeDataSelect:
  35.             proc = (ComponentFunctionUPP)TestTranscoderDisposeData;
  36.             break;
  37.  
  38.         case kImageTranscoderEndSequenceSelect:
  39.             proc = (ComponentFunctionUPP)TestTranscoderEndSequence;
  40.             break;
  41.  
  42.         default:
  43.             err = badComponentSelector;
  44.             break;
  45.     }
  46.  
  47.     if (proc)
  48.         err = CallComponentFunctionWithStorage(storage, params, proc);
  49.  
  50.     return err;
  51. }
  52.  
  53. pascal ComponentResult TestTranscoderBeginSequence (Handle storage, ImageDescriptionHandle srcDesc, ImageDescriptionHandle *dstDesc)
  54. {
  55.     *dstDesc = srcDesc;
  56.     HandToHand((Handle *)dstDesc);
  57.     (***dstDesc).cType = 'raw ';
  58.  
  59.     return noErr;
  60. }
  61.  
  62. pascal ComponentResult TestTranscoderConvert (Handle storage, void *srcData, long srcDataSize, void **dstData, long *dstDataSize)
  63. {
  64.     Ptr p;
  65.     OSErr err;
  66.  
  67.     if (!srcDataSize)
  68.         return paramErr;
  69.  
  70.     p = NewPtr(srcDataSize);
  71.     err = MemError();
  72.     if (err) return err;
  73.  
  74.     {
  75.     Ptr p1 = srcData, p2 = p;
  76.     long counter = srcDataSize;
  77.     while (counter--)
  78.         *p2++ = ~*p1++;
  79.     }
  80.  
  81.     *dstData = p;
  82.     *dstDataSize = srcDataSize;
  83.  
  84.     return noErr;
  85. }
  86.  
  87. pascal ComponentResult TestTranscoderDisposeData (Handle storage, void *dstData)
  88. {
  89.     DisposePtr((Ptr)dstData);
  90.  
  91.     return noErr;
  92. }
  93.  
  94. pascal ComponentResult TestTranscoderEndSequence (Handle storage)
  95. {
  96.     return noErr;
  97. }
  98.  
  99. #ifndef STAND_ALONE
  100.  
  101. void registerTestTranscoder(void)
  102. {
  103.     ComponentDescription foo;
  104.  
  105.       foo.componentType = ImageTranscodererComponentType;
  106.       foo.componentSubType = 'gray';
  107.       foo.componentManufacturer = 'raw ';
  108.       foo.componentFlags = 0;
  109.       foo.componentFlagsMask = 0;
  110.  
  111.     RegisterComponent(&foo, (void *)TestTranscoderDispatcher, 1, 0, 0, 0);
  112. }
  113.  
  114. #endif
  115.